每个字段的不同分析仪 您所在的位置:网站首页 lucenenet 48 每个字段的不同分析仪

每个字段的不同分析仪

#每个字段的不同分析仪| 来源: 网络整理| 查看: 265

问题描述

我如何在与Lucene索引的文档中为每个字段启用不同的分析仪?示例:

RAMDirectory dir = new RAMDirectory(); IndexWriter iw = new IndexWriter(dir, new StandardAnalyzer(Lucene.Net.Util.Version.LUCENE_CURRENT), true, IndexWriter.MaxFieldLength.UNLIMITED); Document doc = new Document(); Field field1 = new Field("field1", someText1, Field.Store.YES, Field.Index.ANALYZED, Field.TermVector.WITH_POSITIONS_OFFSETS); Field field2 = new Field("field2", someText2, Field.Store.YES, Field.Index.ANALYZED, Field.TermVector.WITH_POSITIONS_OFFSETS); doc.Add(field1); doc.Add(field2); iw.AddDocument(doc); iw.Commit();

分析仪是索引作者的论点,但是我想将标准分析仪用于field1和simpleAnalyzer作为field2,我该怎么做?当然,在搜索时也适用.必须为每个字段应用正确的分析仪.

推荐答案

perfieldanalyzerwrapper 您正在寻找. Lucene.net中的等效是 其他推荐答案 Map analyzerMap = new HashMap(); analyzerMap.put(fieldone, new IKAnalyzer4PinYin(false, IKAnalyzer4PinYin.PINYIN)); analyzerMap.put(fieldtwo, new IKAnalyzer4PinYin(false, KAnalyzer4PinYin.PINYIN_SHOUZIMU)); PerFieldAnalyzerWrapper wrapper = new PerFieldAnalyzerWrapper(new IKAnalyzer4PinYin(false), analyzerMap); IndexWriterConfig iwConfig = new IndexWriterConfig(Version.LUCENE_40 , wrapper); 其他推荐答案

necromancing. 对于C#:

Lucene.Net.Util.LuceneVersion version = Lucene.Net.Util.LuceneVersion.LUCENE_48; Dictionary fieldAnalyzers = new Dictionary(System.StringComparer.OrdinalIgnoreCase); fieldAnalyzers["YourFieldName"] = new Lucene.Net.Analysis.Core.KeywordAnalyzer(); Lucene.Net.Analysis.Miscellaneous.PerFieldAnalyzerWrapper wrapper = new Lucene.Net.Analysis.Miscellaneous.PerFieldAnalyzerWrapper( new Lucene.Net.Analysis.Core.KeywordAnalyzer(), fieldAnalyzers); Lucene.Net.Index.IndexWriterConfig writerConfig = new Lucene.Net.Index.IndexWriterConfig(version, wrapper);

本文地址:https://www.itbaoku.cn/post/2564986.html



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有